`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2021/10/17 00:12:34
// Design Name: 
// Module Name: subtractor10_test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module subtractor10_test(
    input rst1,
    input rst2,
    input rst3,
    input cp_main,
    input key,
    output [6:0] out,
    output [3:0] out_en,
    output [7:0] led
    );
    wire [3:0] out_num1,out_num2,out_num3,out_num4,out_fin;
    wire [1:0] div;
    wire cp0,cp1,cout1,cout2,cout3,key_value,cout,en,rst4,key_p_flag,key_n_flag,key_last;
    wire [3:0] LD0,LD1,LD2;
    timer timer_inst(
        .clk(cp_main),
        .rst(rst1),
        .en(en),
        .out(cp0)
    );
    eliminator elimin_inst(
        .rst_n(rst1),
        .clk(cp_main),
        .key(key),
        .key_value(key_value),
        .key_p_flag(key_p_flag),
        .key_n_flag(key_n_flag)
    );
    key_last_control last_inst(
        .clk(cp_main),
        .rst_n(rst1),
        .key_p_flag(key_p_flag),
        .key_n_flag(key_n_flag),
        .last(key_last),
        .key_value(key_final)
    ); 
    mainControl control(
        .clk(cp_main),
        .rst(rst3),
        .key_start_stop(key_final),
        .key_last(key_last),
        .over(cout),
        .LD0(LD0),
        .LD1(LD1),
        .LD2(LD2),
        .en(en),
        .rst_n(rst4)
    );
    lighter light_inst(
        .clk(cp_main),
        .rst(key_p_flag),
        .en(cout),
        .led(led)
    );

    subtractor10 sub10_inst1(
        .rst(rst4),
        .cp(cp0),
        .LD(LD0),
        .out(out_num1),
        .cout(cout1)
    ); // 秒最后一位
    subtractor6 sub6_inst(
        .rst(rst4),
        .cp(cout1),
        .out(out_num2),
        .cout(cout2)
    ); // 秒前一位
    subtractor10 sub10_inst2(
        .rst(rst4),
        .cp(cout2),
        .LD(LD1),
        .out(out_num3),
        .cout(cout3)
    ); // 分最后一位  

    subtractor10 sub10_inst3(
        .rst(rst4),
        .cp(cout3),
        .LD(LD2),
        .out(out_num4),
        .cout(cout)
    ); // 分前一位 
    time_div div_inst(
        .cp(cp_main),
        .rst(rst2),
        .out(div)
    );
    
    sweeper sweep_inst(
        .in0(out_num1),
        .in1(out_num2),
        .in2(out_num3),
        .in3(out_num4),
        .cpdiv(div),
        .rst(1),
        .out(out_fin),
        .en(out_en)
    );
    sevenSegmentDecoder decoder_inst(
        .in(out_fin),
        .out(out)
    );

endmodule
